//
//  IVFaceManager.h
//  IVFaceSdk
//
//  Created by golang on 2021/12/6.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface IVFaceTrack : NSObject

@property(nonatomic, assign)int faceNum;
@property(nonatomic, assign)CGRect faceRect;
@property(nonatomic, assign)CGPoint leftEye;
@property(nonatomic, assign)CGPoint rightEye;
@property(nonatomic, assign)CGPoint noseTip;
@property(nonatomic, assign)CGPoint leftMouth;
@property(nonatomic, assign)CGPoint rightMouth;
@property(nonatomic, assign)float confidence;

@end

@interface IVFeatureVersion : NSObject

@property(nonatomic, copy)NSString *verName;
@property(nonatomic, copy)NSString *verMagic;
@property(nonatomic, assign)int verNum;

@end

NS_ASSUME_NONNULL_BEGIN

@interface IVFaceManager : NSObject

/*
 * 获取单例对象
 */
+ (instancetype)sharedManager;

/*
 * 初始化
 * @param license 授权字符串或者授权文件路径
 * @return 初始化状态码 0 成功, 非 0 参见 IVFaceHeader.h 定义
 */
- (int)ivInit:(NSString *)license;

/*
 * 获取 SDK 版本
 * @return SDK 版本号
 */
- (NSString *)getVersion;

/*
 * 人脸检测
 * @param image 比较推荐尺寸为 480x640 的图像
 * @return 人脸检测信息
 */
- (IVFaceTrack *)faceTrack:(UIImage *)image;

/*
 * 提取模板特征 存库使用
 * @param galleryImage 人脸图像
 * @return 人脸特征点, 可以使用 Base64 转成字符串后保存下来
 */
- (NSData *)takeGalleryFeatures:(UIImage *)galleryImage;

/*
 * 提取探测特征 用于和模板比对
 * @param probeImage 人脸图像
 * @return 人脸特征点
 */
- (NSData *)takeProbeFeatures:(UIImage *)probeImage;

/*
 * 提取探测特征 用于和模板比对
 * @param probeImage 人脸图像
 * @param faceTrack 人脸检测信息
 * @return 人脸特征点
 */
- (NSData *)takeProbeFeatures:(UIImage *)probeImage withTrack:(IVFaceTrack *)faceTrack;

/*
 * 提取特征版本
 * @param feature 人脸特征
 * @return 人脸特征版本标识
 */
- (IVFeatureVersion *)getFeatureVersion:(NSData *)feature;

/*
 * 特征点比对
 * @param gallery 模板特征
 * @param probe 探测特征
 * @return 比分
 */
- (CGFloat)matchFeatures:(NSData *)gallery withProbe:(NSData *)probe;

/*
 * 释放清理SDK
 */
- (void)ivDestroy;

@end

NS_ASSUME_NONNULL_END
